package cn.tedu.dental.user.controller;

import cn.tedu.dental.admin.pojo.dto.DoctorSaveParam;
import cn.tedu.dental.base.response.JsonResult;
import cn.tedu.dental.user.pojo.dto.*;
import cn.tedu.dental.user.pojo.entity.User;
import cn.tedu.dental.user.pojo.vo.UserVO;
import cn.tedu.dental.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/v1/user")
public class UserController {
    @Autowired
    UserService userService;

    @PostMapping("reg")
    //之前前端发过来的是JSON格式的JS对象,需要@RequestBody注解映射到userRegDTO对象的属性上
    //public JsonResult reg(@RequestBody UserRegDTO userRegDTO){
    //现在前端发过来的是qs处理过后的查询字符串,不需要@RequestBody注解映射了
    //以后统一去掉@RequestBody注解,数据由前端处理好再发到Controller
    public JsonResult reg(UserRegDTO userRegDTO) {
        System.out.println("参数:" + userRegDTO);
        //控制层不再涉及业务,只需要调用业务层干活即可
        userService.reg(userRegDTO);
        return JsonResult.ok();
    }

    @PostMapping("login")
    public JsonResult login(UserLoginParam userLoginParam) {
        UserVO userVO = userService.login(userLoginParam);
        return JsonResult.ok(userVO);
    }

    @PostMapping("edit")
    public JsonResult edit(UserEditParam userEditParam) {
        log.debug("修改用户,userEditParam={}", userEditParam);
        userService.edit(userEditParam);
        return JsonResult.ok();
    }


    @GetMapping("update")
    public JsonResult updateUser(UserQuery userQuery) {
        log.debug("查询用户:userQuery={}", userQuery);
        userService.updateUser(userQuery);
        return JsonResult.ok();
    }

    @GetMapping("/update/password")
    public JsonResult updatePassword(UserPasswordParam userPasswordParam) {
        log.debug("查询用户:userPasswordParam={}", userPasswordParam);
        userService.updatePassword(userPasswordParam);
        return JsonResult.ok();
    }

    @GetMapping("select")
    public JsonResult selectUser(UserQuery userQuery) {
        log.debug("查询用户:userQuery={}", userQuery);
        UserVO userVO = userService.selectUser(userQuery);
        log.debug("查询结果:userVO={}", userVO);
        return JsonResult.ok(userVO);
    }

    @GetMapping("selectById")
    public JsonResult selectById( UserQuery userQuery) {
        log.debug("查询参数UserQuery={}", userQuery);
        UserVO userVO = userService.selectUserById(userQuery);
        return JsonResult.ok(userVO);
    }

    @PostMapping("save")
    public JsonResult saveUser(UserSaveParam userSaveParam) {
        log.debug("保存用户,userSaveParam={}", userSaveParam);
        userService.saveDoctor(userSaveParam);
        return JsonResult.ok();
    }

    @PostMapping("/delete/{userId}")
    public JsonResult deleteUser(@PathVariable Long userId){
        log.debug("删除用户,userId={}",userId);
        userService.deleteUser(userId);
        return JsonResult.ok();
    }

}
